0f23f8c498986fe573607cc64d680660b238ec9f,fabric/fabric-commands/src/main/java/org/fusesource/fabric/commands/ProfileEdit.java,ProfileEdit,editProfile,#Profile#,118

Before Change


    private void editProfile(Profile profile) throws Exception {
        String pid = AGENT_PID;

        if (configAdminConfigList != null) {
            pid = configAdminConfigList.substring(0,configAdminConfigList.indexOf(PID_KEY_SEPARATOR));
        }

        Map<String, Map<String, String>> config = profile.getConfigurations();
        Map<String, String> pidConfig = config.get(pid);

        if (pidConfig == null) {
            pidConfig = new HashMap<String, String>();
        }

        if (featuresList != null && !featuresList.isEmpty()) {
            String[] features = featuresList.split(DELIMETER);
            for (String feature : features) {
                updateConfig(pidConfig, FEATURE_PREFIX + feature.replace('/', '_'), feature, set, delete);
            }
        }
        if (repositoryUriList != null && !repositoryUriList.isEmpty()) {
            String[] repositoryURIs = repositoryUriList.split(DELIMETER);
            for (String repopsitoryURI : repositoryURIs) {
                updateConfig(pidConfig, REPOSITORY_PREFIX + repopsitoryURI.replace('/', '_'), repopsitoryURI, set, delete);
            }
        }
        if (bundlesList != null && !bundlesList.isEmpty()) {
            String[] bundles = bundlesList.split(DELIMETER);
            for (String bundlesLocation : bundles) {
                updateConfig(pidConfig, BUNDLE_PREFIX + bundlesLocation.replace('/', '_'), bundlesLocation, set, delete);
            }
        }
        if (fabsList != null && !fabsList.isEmpty()) {
            String[] fabs = fabsList.split(DELIMETER);
            for (String fabsLocation : fabs) {
                updateConfig(pidConfig, FAB_PREFIX + fabsLocation.replace('/', '_'), fabsLocation, set, delete);
            }
        }

        if (configAdminConfigList != null && !configAdminConfigList.isEmpty()) {
            Map<String, String> configMap = extractConfigs(configAdminConfigList);
            for (Map.Entry<String, String> configEntries : configMap.entrySet()) {
                String key = configEntries.getKey();
                if (key.contains(PID_KEY_SEPARATOR)) {
                    String currentPid = key.substring(0, key.lastIndexOf(PID_KEY_SEPARATOR));
                    key = key.substring(key.lastIndexOf(PID_KEY_SEPARATOR) + 1);
                    String value = configEntries.getValue();
                    Map<String, String> cfg = config.get(currentPid);
                    if (cfg == null) {
                        cfg = new HashMap<String, String>();
                    }
                    if (importPid) {
                        importPidFromLocalConfigAdmin(currentPid, cfg);
                    }
                    updatedDelimitedList(pidConfig, key, value, delimiter, set, delete, append, remove);
                    config.put(currentPid, cfg);
                }
            }

After Change


            }
        }

        if (configAdminProperties != null && configAdminProperties.length > 0) {

            for (String configAdminProperty : configAdminProperties) {
                String currentPid = null;
                Map<String, String> existingConfig = null;

                if (configAdminProperty != null ) {
                    String keyValue = "";
                    if (configAdminProperty.contains(PID_KEY_SEPARATOR)) {
                        currentPid = configAdminProperty.substring(0, configAdminProperty.indexOf(PID_KEY_SEPARATOR));
                        keyValue = configAdminProperty.substring(configAdminProperty.indexOf(PID_KEY_SEPARATOR) + 1);
                    } else {
                        currentPid = configAdminProperty;
                    }
                    
                    existingConfig = config.get(currentPid);
                    if (existingConfig == null) {
                        existingConfig = new HashMap<String, String>();
                    }
                    
                    //We only support import when a single pid is spcecified
                    if (configAdminProperties.length == 1 && importPid) {
                        importPidFromLocalConfigAdmin(currentPid, existingConfig);
                    }
                    
                    
                    Map<String, String> configMap = extractConfigs(keyValue);
                    for (Map.Entry<String, String> configEntries : configMap.entrySet()) {
                        String key = configEntries.getKey();
                        String value = configEntries.getValue();
                        updatedDelimitedList(existingConfig, key, value, delimiter, set, delete, append, remove);
                    }

                    config.put(currentPid, existingConfig);